/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package sistemadeleiloes.model;

/**
 *
 * @author William
 */
import java.util.Comparator;
import java.util.Date;
public class Lance implements Comparable<Lance>{
    //Atributos
    private int id;
    private double valor;
    private Date dtCriacao;
    private Usuario participante;
    private Leilao idLeilao;

    /**
     * @return the idLeilao
     */
    public Leilao getIdLeilao() {
        return idLeilao;
    }

    /**
     * @param idLeilao the idLeilao to set
     */
    public void setIdLeilao(Leilao idLeilao) {
        this.idLeilao = idLeilao;
    }
    
    //Comparadores
    public static class ComparatorData implements Comparator {
        @Override
        public int compare(Object o1, Object o2) {
            if(o1 instanceof Lance && o2 instanceof Lance) {
                Lance l1 = (Lance)o1, l2 = (Lance)o2;
                return l1.getDtCriacao().compareTo(l2.getDtCriacao());
            }
            throw new UnsupportedOperationException("Compara-se apenas lances!");
        }
    }
    
    //Construtores
    public Lance() {
    }

    public Lance(int id, double valor, Date horarioCriacao, Usuario participante, Leilao idLeilao) {
        this.id = id;
        this.valor = valor;
        this.dtCriacao = horarioCriacao;
        this.participante = participante;
        this.idLeilao = idLeilao;
    }
    
    //Getters e Setters
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public double getValor() {
        return valor;
    }

    public void setValor(double valor) {
        this.valor = valor;
    }

    public Date getDtCriacao() {
        return dtCriacao;
    }

    public void setDtCriacao(Date dtCriacao) {
        this.dtCriacao = dtCriacao;
    }

    public Usuario getParticipante() {
        return participante;
    }

    public void setParticipante(Usuario participante) {
        this.participante = participante;
    }

    //compareTo
    @Override
    public int compareTo(Lance o) {
        if (o.getValor() == this.getValor()) {
            return 0;
        }
        if (o.getValor() > this.getValor()) {
            return -1;
        }
        return 1;
    }
    
    
}
